package cn.qinggu.cloud.common.verify;

import cn.qinggu.cloud.common.character.StringUtil;

import java.util.regex.Pattern;

/**
 * 校验工具类
 *
 * @author: sky
 * @date: 2017/10/19 17:17
 */
public class VerifyUtil {

    /**
     * 手机号
     */
    private static Pattern PHONE_NUMBER = Pattern.compile("^1\\d{10}$");

    /**
     * 纯数字
     * <p>
     * 以数字开头
     * 1个或多个数字组成
     * 以数字结尾
     */
    private static Pattern NUMBER = Pattern.compile("^[0-9]+$");

    /**
     * 英文字母（包含大小写）
     * <p>
     * 以字母开头
     * 1个或多个字母组成
     * 以字母结尾
     */
    private static Pattern LETTER = Pattern.compile("^[a-zA-Z]+$");

    /**
     * 包含字母或数字
     * <p>
     * 以字母或数字开头
     * 1个或多个字母或数字组成
     * 以字母或数字结尾
     */
    private static Pattern NUMBER_OR_LETTER = Pattern.compile("^[a-zA-Z0-9]+$");

    /**
     * 包含字母或数字或下划线
     * <p>
     * 以字母或数字或下划线开头
     * 1个或多个字母或数字或下划线组成
     * 以字母或数字或下划线结尾
     */
    private static Pattern NUMBER_OR_LETTER_OR_UNDERLINE = Pattern.compile("^\\w+$");

    /**
     * 检查是否为手机号
     *
     * @param content
     * @return
     */
    public static boolean isPhoneNumber(String content) {
        if (StringUtil.isEmpty(content)) {
            return false;
        }
        return PHONE_NUMBER.matcher(content).find();
    }


    /**
     * 是否为纯数字
     *
     * @return true 数字
     */
    public static boolean isNumber(final String content) {
        return NUMBER.matcher(content).find();
    }

    /**
     * 是否纯英文字母
     *
     * @return true 数字
     */
    public static boolean isLetter(final String content) {
        return LETTER.matcher(content).find();
    }

    /**
     * 包含字母或数字
     *
     * @param content
     * @return
     */
    public static boolean isNumberOrLetter(final String content) {
        return NUMBER_OR_LETTER.matcher(content).find();
    }

    /**
     * 包含字母或数字或下划线
     *
     * @param content
     * @return
     */
    public static boolean isNumberOrLetterOrUnderline(final String content) {
        return NUMBER_OR_LETTER_OR_UNDERLINE.matcher(content).find();
    }


    /**
     * 检查是否为邮箱
     *
     * @param content
     * @return
     */
    public static boolean isEmail(String content) {
        return true;
    }


}
